"""
定义有可选参数的元类

问题：
    你想定义一个元类，允许类定义时提供可选参数，这样可以控制或配置类型的创建过程。
解决方案：
    在定义类的时候，Python允许我们使用 ``metaclass``关键字参数来指定特定的元类。
    为了使元类支持这些关键字参数，你必须确保在 __prepare__() , __new__() 和 __init__() 方法中 都使用强制关键字参数。
"""


class MyMeta(type):
    """
    我的元类
    """

    @classmethod
    def __prepare__(cls, name, bases, *, debug=False, synchronize=False):
        # custom
        return super().__prepare__(name, bases)

    def __new__(cls, name, bases, ns, *, debug=False, synchronize=False):
        # custom
        return super().__new__(name, bases, ns)

    def __init__(self, name, bases, ns, *, debug=False, synchronize=False):
        # custom
        super().__init__(name, bases, ns)


class Logger(metaclass=MyMeta, debug=True, synchronize=True):
    pass
